---
categories: Graph algorithms, Graph theory
---
In the minimum Steiner tree problem, we are given an edge-weighted graph $G = (V, E, w)$ and a subset $S \subseteq V$ of required vertices. A Steiner tree is a tree in $G$ that spans all vertices of $S$, meaning that they are all in the same component. The objective of the problem is to find a Steiner tree of minimum weight. The decision version of the problem is [NP-complete](NP-completeness). However, it is [fixed-parameter tractable](Fixed-parameter tractability) when parameterized by the size of $S$, as is witnessed by the dynamic programming algorithm shown below.
## Algorithms
### Complete search
Time complexity is $O\left(\binom{n}{k-2} k^2 \log(k)\right)$, where $n=|V|$ and $k=|S|$.
### Dynamic programming
Time complexity is $O(n3^k + n^22^k)$.
## Problems
- [Jailbreak](https://open.kattis.com/problems/jailbreak) [^1]
- [Shovelling Snow](https://open.kattis.com/problems/shovelling)
- [Ticket to Ride](http://www.csc.kth.se/contest/nwerc/2006/problems/nwerc06.pdf)
- [Hexagonal Parcels](http://contest.felk.cvut.cz/07cerc/solved/h/)
## See also
- [Minimum spanning tree]()
- [NP-complete]()
## External links
- The Steiner Problem in Graphs
[^1]: